/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.sadhar.sipp.laporananggaranpendapatanuangkemahasiswaan;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.sadhar.sia.common.ClassConnection;

/**
 *
 * @author kris
 */
public class LaporanAnggaranPendapatanUangKemahasiswaanDAOImpl implements LaporanAnggaranPendapatanUangKemahasiswaanDAO {

    public LaporanAnggaranPendapatanUangKemahasiswaanDAOImpl() {
        ClassConnection.getTransactionProxyFactoryBean().setTarget(this);
    }

    public List<Map> getTahunAnggaran() throws Exception {
        String sql = "select DISTINCT tahunAnggaran from ppmk.posAnggaranPendapatanUnit";
        List<Map> result = ClassConnection.getJdbc().queryForList(sql);
        return result;
    }

    public List<Map> getReport(String tahunAwal, String tahunAkhir, String kdUnit, String kdTagih) throws Exception {
        List<Map> result = new ArrayList<Map>();
        String sql = "SELECT Nama_unit_kerja, Kd_unit_kerja,Kd_tagih,nama_tagih,  prediksiJmlMhsBaru, tarif," +
                "(prediksiJmlMhsBaru*tarif) AS jumlah_anggaran, ppmk.posAnggaranPendapatanUnit.tahunAnggaran,unit.Kd_unit_kerja,tagihan.Kd_tagih" +
                " FROM ppmk.anggaranPendapatanKemahasiswaan AS anggaran " +
                " INNER JOIN kamus.tagihan AS tagihan ON anggaran.kodeTagihan=tagihan.Kd_tagih " +
                " INNER JOIN ppmk.posAnggaranPendapatanUnit " +
                " ON anggaran.idPosAnggaranPendapatanUnit = ppmk.posAnggaranPendapatanUnit.idPosAnggaranPendapatanunit " +
                " INNER JOIN kamus.unkerja AS unit ON ppmk.posAnggaranPendapatanUnit.kodeUnitKerja =unit.Kd_unit_kerja " +
                " WHERE ppmk.posAnggaranPendapatanUnit.tahunAnggaran>=? AND " +
                " ppmk.posAnggaranPendapatanUnit.tahunAnggaran<=?";

        if (!kdUnit.equals("") && !kdTagih.equals("")) {
            System.out.println("kode unit & jenis tagih");
            sql += " AND Kd_unit_kerja=? AND Kd_tagih=?";
            result = ClassConnection.getJdbc().queryForList(sql, new Object[]{tahunAwal, tahunAkhir, kdUnit, kdTagih});
            return result;
        }
        if (!kdUnit.equals("")) {
            System.out.println("kode unit");
            sql += " AND Kd_unit_kerja=? ";
            result = ClassConnection.getJdbc().queryForList(sql, new Object[]{tahunAwal, tahunAkhir, kdUnit});
            return result;
        }
        if (!kdTagih.equals("")) {
            System.out.println("jenis tagih");
            sql += " AND Kd_tagih=?";
            result = ClassConnection.getJdbc().queryForList(sql, new Object[]{tahunAwal, tahunAkhir, kdTagih});
            return result;
        }

        return result;
    }

    public List<Map> getAllUnitKerja() throws Exception {
        List<Map> result = ClassConnection.getJdbc().queryForList("SELECT *FROM kamus.unkerja order by Nama_unit_kerja");
        return result;
    }

    public List<Map> getAllJenisPendapatan() throws Exception {
        List<Map> result = ClassConnection.getJdbc().queryForList("SELECT *FROM kamus.tagihan order by nama_tagih");
        return result;
    }
}
